﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace skatesLetsPlayTool
{
    public partial class frmSettings : Form
    {
        public frmSettings()
        {
            InitializeComponent();
        }

        private void frmSettings_Load(object sender, EventArgs e)
        {

        }

        #region "Allgemeines"

        private void cmdAufnahmeOrdnerDurchsuchen_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog()
            {
                Description = "Wähle deinen Aufnahmeordner!",
                SelectedPath = this.txtAufnahmeordner.Text,
                ShowNewFolderButton = true
            };

            if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                this.txtAufnahmeordner.Text = fbd.SelectedPath;
            }

        }

        private void txtAufnahmeordner_TextChanged(object sender, EventArgs e)
        {

            // Drive Name abrufen
            try
            {
            System.IO.DriveInfo drvinfo = new System.IO.DriveInfo(this.txtAufnahmeordner.Text.Substring(0, 1));
            this.txtAufnahmefestplatte.Text = ((drvinfo.VolumeLabel == "") ? "Lokaler Datenträger" : drvinfo.VolumeLabel) + " (" + drvinfo.Name.Remove(drvinfo.Name.Length - 1) + ")";
            }
            catch
            {
                // Nothing
            }
        }

        private void lilAutomatischesLernen_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (MessageBox.Show("Das Tool zeichnet auf, wie groß aufgenommene Dateien sind, um im Vorraus den verbleibenden Speicherplatz berechnen zu können." +
                " Sollen diese Daten zurückgesetzt werden (z.B. beim Ändern der Aufnahmetechnik)?", "Wirklich zurücksetzen?", MessageBoxButtons.YesNoCancel) == DialogResult.Yes)
            {
                // TODO: Fettes Magic mit Daten löschen und so. ~
            }
        }

        private void cmdAufnahmestart_Click(object sender, EventArgs e)
        {
            this.lblAufnahmestartESC.Visible = true;
            this.cmdAufnahmestart.Text = "Warte auf Eingabe...";
            this.cmdAufnahmestart.ForeColor = Color.Red;

            this.cmdAufnahmestart.KeyDown += cmdAufnahmestart_KeyDown;
        }

        private void cmdAufnahmestart_LostFocus(object sender, EventArgs e)
        {
            this.lblAufnahmestartESC.Visible = false;
            this.cmdAufnahmestart.ForeColor = Color.Black;
            this.cmdAufnahmestart.KeyDown -= cmdAufnahmestart_KeyDown;
            // TODO: Aus den Settings die richtige Taste wieder auslesen.. ~ 
        }

        void cmdAufnahmestart_KeyDown(object sender, KeyEventArgs e)
        {
            this.lblAufnahmestartESC.Visible = false;
            this.cmdAufnahmestart.Text = e.KeyCode.ToString();
            this.cmdAufnahmestart.ForeColor = Color.Black;

            this.cmdAufnahmestart.KeyDown -= cmdAufnahmestart_KeyDown;
        }

        // Faulheit statt inhalticher Korrektheit #Missgeburt
        #region "Copy Paste"

        private void cmdAufnahmestop_Click(object sender, EventArgs e)
        {
            this.lblAufnahmestopESC.Visible = true;
            this.cmdAufnahmestop.Text = "Warte auf Eingabe...";
            this.cmdAufnahmestop.ForeColor = Color.Red;

            this.cmdAufnahmestop.KeyDown += cmdAufnahmestop_KeyDown;
        }

        private void cmdAufnahmestop_LostFocus(object sender, EventArgs e)
        {
            this.lblAufnahmestopESC.Visible = false;
            this.cmdAufnahmestop.ForeColor = Color.Black;
            this.cmdAufnahmestop.KeyDown -= cmdAufnahmestop_KeyDown;
            // TODO: Aus den Settings die richtige Taste wieder auslesen.. ~ 
        }

        void cmdAufnahmestop_KeyDown(object sender, KeyEventArgs e)
        {
            this.lblAufnahmestopESC.Visible = false;
            this.cmdAufnahmestop.Text = e.KeyCode.ToString();
            this.cmdAufnahmestop.ForeColor = Color.Black;

            this.cmdAufnahmestop.KeyDown -= cmdAufnahmestop_KeyDown;
        }

        #endregion

        private void cbErinnerung_CheckedChanged(object sender, EventArgs e)
        {
            this.txtErinnerung.Enabled = cbErinnerung.Checked;
        }

        #endregion

        private void cmdAbbrechen_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// Speichert alle Einstellungen in der Settings-Datei (Serialisiert).
        /// </summary>
        private void saveSettings()
        {

        }

        private void cmdOK_Click(object sender, EventArgs e)
        {
            saveSettings();
            this.Close();
        }

        private void cmdÜbernehmen_Click(object sender, EventArgs e)
        {
            saveSettings();
        }
    }
}
